1. Technical Field
The present invention relates in general to a method and system for data processing and, in particular, to method and apparatus for processing communication transactions in a data processing system. Still more particularly, the present invention relates to a method and apparatus for recirculating communication transactions in a data processing system in order to reduce the performance penalty associated with communication stalls.
2. Description of the Related Art
In shared memory multiprocessor (MP) computer systems that include two or more processing nodes, inter-node communication is typically handled by a bridge within each node. Such bridges may receive communication packets from other processing nodes via a node interconnect, provide reply packets to the other processing nodes via the node interconnect, and source and receive packets on a processing node's local interconnect. Because certain (e.g., shared bus) implementations of shared memory MP computer systems require that packets received via the node interconnect be delivered to the local interconnect sequentially, each bridge may include a buffer to temporarily store packets until the packets can be sourced on the associated processing node's local interconnect.
Of course, in a practical implementation of a shared memory MP computer systems, the buffers within the processing nodes' bridges are constrained to some limited size. Once a buffer is full, the bridge must either source a packet on the local interconnect to create an empty buffer entry or the bridge must suspend receipt of communication packets from other processing nodes (i.e., stall). Such stalls can be due to the current inability of a target processing node to process a packet stored in the buffer and/or delays attributable to the packet processing logic itself. In either case, communication stalls have a deleterious effect on MP computer system performance since the stall delays the transmission of all subsequent packets to the stalled processing node.
In view of the foregoing it would be desirable and useful to provide a method and apparatus that decrease the performance penalty incurred in the event of a communication stall in a computer system.